/**
 * @author LKQ
 * @date 2022/2/27 18:12
 * @description 优化
 */
public class Solution2 {
    public static void main(String[] args) {
        Solution2 solution2 = new Solution2();
        solution2.isThree(29);
    }
    public boolean isThree(int n) {
        if(n == 4 || n == 9) {
            return true;
        }
        if(n <= 16) {
            return false;
        }
        // 三个正除数，1肯定是，n肯是，剩下一个为 sqrt(n) 并且 sqrt(n) 为质数，不存在其他因子
        int sq = (int) Math.sqrt(n);
        for(int i = 2; i <= Math.sqrt(sq); i++) {
            if(n % i == 0) {
                return false;
            }
        }
        // 本身为质数，则无法
        return sq * sq == n;
    }
}
